6.11 索引重置
索引重置就是对索引标签的位置重新排列,对DateFrame表格索引重置使用d.reindex()
结构如下:
df.reindex(labels=None,index=None,columns=None,method=None,copy=None,level=None,fill_value=nan,limit=None,tolerance=None)
labels :指定要重置的标签序列,可以是列表,数组等可迭代对象
index :如果axis=0,可以index=labels形式重置行索引
columns :如果axis=1,可以columns=labels形式重置列索引
axis :指定重置索引的方向;
method :重置索引后,DateFrame中缺失值的补充,有四个形式
None(default): 不填补空白,默认值
Pad/ffill: 将上一个有效索引值填补到下一下空白
Backfill/bfill: 使用后一个有效观察值填补空白
Nearest: 使用最近有效的观测值来填补空白,注意,这仅适用于具有单调递减/递增索引的DateFrame
Copy: 返回一个新对象,即使传递的索引相同
import pandas as pd,numpy as np
df1=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.重置索引.xlsx" , index_col = 0 , sheet_name = "素材1" )
df2=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.重置索引.xlsx" , sheet_name = "素材2" )
print (df1)
print (df2)
df3=np.unique(df2.工号) #np.unique() 函数去除其中重复的元素 ,并按元素由小到大 返回一个新的无元素重复的元组或者列表。
df=df1.reindex( labels =df3)
print (df)
返回:
班别 | 姓名 | 理论 | 实操 | |
---|---|---|---|---|
工号 | ||||
NED25 | A班 | 张三 | 89 | 87 |
NED21 | A班 | 李四 | 68 | 56 |
NED07 | A班 | 杨麻子 | 23 | 12 |
NED28 | B班 | 小新 | 98 | 88 |
NED22 | B班 | 小曾 | 79 | 86 |
工号 | 性别 | |
---|---|---|
0 | NED28 | 男 |
1 | NED07 | 女 |
2 | NED29 | 男 |
3 | NED25 | 女 |
4 | NED28 | 男 |
班别 | 姓名 | 理论 | 实操 | |
---|---|---|---|---|
工号 | ||||
NED07 | A班 | 杨麻子 | 23.0 | 12.0 |
NED25 | A班 | 张三 | 89.0 | 87.0 |
NED28 | B班 | 小新 | 98.0 | 88.0 |
NED29 | NaN | NaN | NaN | NaN |
索引重置时,如果索引标签不存在时,那么就会创建为新标签,新索引标签对应的数据则默认为缺失值, 但df.reindex()的method参数也提供了其他不同的填充方式。
1、 取相同值填充,
引标签对应的数据没有填充之前都是缺失值,如果都填充为相同值,那么可以使用fill_value参数。
2、 取前一个有效值填充
如果要提取前一个有效值,那么method参数可以设置为“pad”
3、取后一个有效值填充
如果要提取后一个有效值,那么method参数可以设置为“pad”
4、Nearest:使用最近有效的观测值来填补空白,注意,这仅适用于具有单调递减/递增索引的DateFrame
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.6.11 索引重置2.xlsx" )
df1=df.reindex( labels =[ 0,0.1,0.5,0.9,1,2 ], method = "pad" )
df2=df.reindex( labels =[ 0,0.1,0.5,0.9,1,2 ], method = "nearest" )
print (df1)
print (df2)
返回:
姓名 | 部门 | 工资 | |
---|---|---|---|
0.0 | 张三 | 销售部 | 10000 |
0.1 | 张三 | 销售部 | 10000 |
0.5 | 张三 | 销售部 | 10000 |
0.9 | 张三 | 销售部 | 10000 |
1.0 | 杨麻子 | IT部 | 9999 |
2.0 | 小新 | 财务部 | 6666 |
姓名 | 部门 | 工资 | |
---|---|---|---|
0.0 | 张三 | 销售部 | 10000 |
0.1 | 张三 | 销售部 | 10000 |
0.5 | 杨麻子 | IT部 | 9999 |
0.9 | 杨麻子 | IT部 | 9999 |
1.0 | 杨麻子 | IT部 | 9999 |
2.0 | 小新 | 财务部 | 6666 |